<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.92">
	<channel>
    <title>probleme-p-np-</title>
    <link>http://probleme-p-np-.blog2geek.com</link>
    <description>Blog specialise; geek et geek attitude.</description>
    <language>fr-FR</language><item>
        <title>Problème P = NP ?</title>
        <link>http://probleme-p-np-.blog2geek.com/probleme-p-np--735.html</link>
        <description>
Proposé par : Gilbert Han et Benjamin Cohen Solal


Tout d&amp;#39;abord, voici un lien vers la version Word 2007 (.docx) et la version PDF de ce rapport (nettement plus lisible) : http://www.box.net/shared/mtj9g5m6yx 


 Table des matières


Introduction


Quelques concepts


Complexité


Déterminisme et non
déterminisme


Algorithmes polynômiaux


La classe P


La classe NP


Le problème P = NP


Conclusion


 

Introduction


Un champ de recherche majeur des mathématiques actuelles est
l&amp;#39;investigation de la propriété : a-t-on P=NP ? Autrement dit, peut-on trouver
en temps polynômial ce que l&amp;#39;on peut prouver en temps polynômial ? Ce problème
est si important qu&amp;#39;il fait partie des 7 problèmes du millénaire, dont la
résolution est primée 1 million de dollars par le Clay Mathematic Institute.


Une autre formulation est : « Tout ce que l&amp;#39;on peut vérifier
facilement, peut-il être découvert aisément ? ». Vérifier qu&amp;rsquo;un chemin dans un
graphe passe par tous les n&amp;oelig;uds du graphe sans jamais passer deux fois par le
même n&amp;oelig;ud (chemin hamiltonien) est facile, trouver le chemin n&amp;rsquo;est pas facile
(aujourd&amp;#39;hui, aucun algorithme efficace ne le permet).


Quelques concepts



Complexité



La complexité algorithmique est un moyen d&amp;#39;évaluation du
coût d&amp;#39;un algorithme. Cette complexité mesure le nombre d&amp;#39;opérations
élémentaires et le coût mémoire. Cela permet surtout de connaitre le type de
croissance en fonction de la taille des données. La complexité d&amp;rsquo;un problème
est l&amp;rsquo;ordre de grandeur de la complexité (dans le pire cas) du meilleur
algorithme connu pour le résoudre. La théorie de la complexité algorithmique
s&amp;#39;intéresse à l&amp;#39;estimation de l&amp;#39;efficacité des algorithmes. Elle s&amp;#39;attache à la
question : entre différents algorithmes réalisant une même tâche, quel est le
plus rapide et dans quelles conditions ? 

Déterminisme et non déterminisme

Une machine déterministe est le modèle formel d&amp;#39;une machine
telle que nous les connaissons (nos ordinateurs sont des machines
déterministes). Les deux modèles les plus utilisés en informatique théorique
sont :


	La machine de Turing


	La machine RAM (Random access machine)


Les machines déterministes font toujours un seul calcul à la
fois. Ce calcul est constitué d&amp;#39;étapes élémentaires. A chacune de ces étapes,
pour un état donné de la mémoire de la machine, l&amp;#39;action élémentaire effectuée
sera toujours la même. Pour la suite, on pourra imaginer sans perte de
généralité qu&amp;#39;une machine de Turing déterministe correspond à l&amp;#39;ordinateur
favori du lecteur, programmé dans un langage impératif quelconque.


Une machine de Turing non-déterministe est une variante
purement théorique des machines de Turing: on ne peut pas construire de telle
machine. À chaque étape de son calcul, cette machine peut effectuer un choix
non-déterministe: elle a le choix entre plusieurs actions, et elle en effectue
une. Si l&amp;#39;un des choix l&amp;#39;amène à accepter l&amp;#39;entrée, on considère qu&amp;#39;elle a fait
ce choix-là. En quelque sorte, elle devine toujours juste. Une autre manière de
voir leur fonctionnement est de considérer qu&amp;#39;à chaque choix non-déterministe,
elles se dédoublent, les clones poursuivent le calcul en parallèle suivant les
branches du choix. Si l&amp;#39;un des clones accepte l&amp;#39;entrée, on dit que la machine
accepte l&amp;#39;entrée.


Il semblerait donc naturel de penser que les machines de
Turing non-déterministes sont beaucoup plus puissantes que les machines de
Turing déterministes, autrement dit qu&amp;#39;elles peuvent résoudre en un temps
raisonnable des problèmes que les machines ordinaires ne savent pas résoudre à
moins de prendre des années.

Algorithmes polynômiaux

Un algorithme est dit en temps polynômial si, pour tout n,
pour des données ne prenant pas plus de n octets, l&amp;#39;algorithme s&amp;#39;exécute en
moins de C × nk opérations élémentaires (les constantes C et k étant
bien sûr indépendantes de n).


Dans la définition précédente, le terme d&amp;#39;opérations
élémentaires est assez vague. On doit le comprendre comme des additions, des
multiplications, des comparaisons, etc. (tout ce que le processeur sait
réaliser en un temps fixe). Ce qu&amp;#39;il faut retenir, c&amp;#39;est que les algorithmes
polynômiaux sont les seuls à pouvoir être utilisés informatiquement pour de
grandes valeurs de n, et ce, quelle que soit la puissance de la machine.

La classe P

Un problème de décision est dans P s&amp;#39;il peut être décidé par
un algorithme déterministe en un temps polynomial par rapport à la taille de
l&amp;#39;instance. On qualifie alors le problème de polynomial.


Prenons par exemple le problème de la connexité dans un
graphe. Étant donné un graphe à s sommets, il s&amp;#39;agit de savoir si toutes les
paires de sommets sont reliées par un chemin. Pour le résoudre, on dispose de
l&amp;#39;algorithme de parcours en profondeur qui va construire un arbre couvrant du
graphe à partir d&amp;#39;un sommet. Si cet arbre contient tous les sommets du graphe,
alors le graphe est connexe. Le temps nécessaire pour construire cet arbre est
au plus s2, donc le problème est bien dans la classe P.


Les problèmes dans P correspondent en fait à tous les
problèmes facilement solubles.

La classe NP

La définition d&amp;#39;un problème NP peut sembler complexe. Essayons
de l&amp;#39;éclaircir. Un des problèmes difficiles des mathématiques est la
factorisation d&amp;#39;un entier en produit de facteurs premiers. On ne sait pas s&amp;#39;il
existe un algorithme polynômial qui réussisse cette opération. Autrement dit,
on ne sait pas si ce problème est dans P. En revanche, étant donné des nombres
p1, &amp;hellip;, pk, il est trivial de vérifier si n = p1&amp;hellip;pk
: ce problème est dans NP.


Pour résumer, être dans P, c&amp;#39;est trouver une solution en
temps polynômial, tandis qu&amp;#39;être dans NP, c&amp;#39;est prouver en temps polynômial
qu&amp;#39;une proposition de réponse est une solution du problème. Ainsi, tout
problème qui est dans P se trouve dans NP. 

Le problème P = NP

Le problème P = NP revient à savoir si on peut résoudre un
problème NP-Complet avec un algorithme polynomial. Les problèmes étant tous
classés les uns à partir des autres (un problème est NP-Complet si l&amp;#39;on peut
réduire un problème NP-Complet connu en ce problème), faire tomber un seul de
ces problèmes dans la classe P fait tomber l&amp;#39;ensemble de la classe NP, ces
problèmes étant massivement utilisés, en raison de leur difficulté, par
l&amp;#39;industrie, notamment en cryptographie (la factorisation en nombres premiers).
Ceci fait qu&amp;#39;on conjecture cependant que les problèmes NP-complets ne sont pas
solubles en un temps polynomial.


À partir de là plusieurs approches sont tentées :


	Des algorithmes d&amp;#39;approximation permettent de
	trouver des solutions approchées de l&amp;#39;optimum en un temps raisonnable pour un
	certain nombre de programmes. Dans le cas d&amp;#39;un problème d&amp;#39;optimisation on
	trouve généralement une réponse correcte, sans savoir s&amp;#39;il s&amp;#39;agit de la
	meilleure solution ;


	Des algorithmes stochastiques : en utilisant des
	nombres aléatoires on peut « forcer » un algorithme à ne pas utiliser les cas
	les moins favorables, l&amp;#39;utilisateur devant préciser une probabilité maximale
	admise que l&amp;#39;algorithme fournisse un résultat erroné. Citons notamment comme
	application des algorithmes de test de primalité en temps polynomial en la
	taille du nombre à tester. A noter qu&amp;#39;un algorithme polynomial non stochastique
	a été proposé pour ce problème en août 2002 par Agrawal, Kayal et Saxena ;


	Des heuristiques permettent d&amp;#39;obtenir des solutions
	généralement bonnes mais non exactes en un temps de calcul modéré ;


	Des algorithmes par séparation et évaluation
	permettent de trouver la ou les solutions exactes. Le temps de calcul n&amp;#39;est
	bien sûr pas borné « polynomialement » mais, pour certaines classes
	de problèmes, il peut rester modéré pour des instances relativement grandes ;


	On peut restreindre la classe des problèmes
	d&amp;#39;entrée à une sous-classe suffisante, mais plus facile à résoudre.


Si ces approches échouent, le problème est non soluble en
pratique dans l&amp;#39;état actuel des connaissances.

Conclusion

La question « P = NP ? » est l&amp;#39;un de sept problèmes
sélectionnés par l&amp;#39;Institut Clay en l&amp;#39;an 2000 : comme pour les six autres, une
somme d&amp;#39;un million de dollars attend celle, celui ou ceux qui le résoudront.
Certains affirment que c&amp;#39;est le plus important des sept problèmes et donc la
principale énigme des mathématiques d&amp;rsquo;aujourd&amp;#39;hui. Il semble aussi être le seul
dont la résolution aurait des conséquences pratiques (il est lié à des
centaines d&amp;rsquo;énoncés concrets) et sa portée philosophique est la plus grande :
la question « P = NP ? » concerne la nature de la recherche de solution(s) dans
un ensemble exponentiel de possibilités, ce qui est le problème même de la
recherche scientifique.


En revanche, la résolution de ce problème peut également
avoir un impact négatif sur l&amp;rsquo;informatique, notamment en cryptographie où
beaucoup d&amp;rsquo;algorithmes de cryptage deviendraient facilement
« crackable » et par conséquent inutiles.


 
</description>
		<pubDate>Mon, 21 May 2007 09:33:00 GMT</pubDate>
      </item>		</channel>
</rss> 
